User defined names for displaying monitored location

ABSTRACT

A user&#39;s location may be tracked by tracking a device associated with the user. The user&#39;s location may be published (e.g. on a website) using a user defined name or some other name that is not related to the coordinates of the location based on the tracked location of the device. If published to a website, the name may be uploaded to the website in a user-editable area of the website, which area may or may not be directed to tracking the location of the user. The device may also be configured to trigger reminders based on whether the device is leaving an area and/or based on whether the device is approaching a location based on the location&#39;s membership in a class of locations (e.g. approaching a grocery store).

BACKGROUND

Tracking applications have been developed to track a user using a devicecarried by the user. In some of these applications, the device iscoupled to a global positioning system (GPS) circuit designed todetermine the location of the device. This location information is thenuploaded to a server which may be accessible by other users to determinethe location of the user being tracked. The location of the user beingtracked is displayed using the coordinates of the user to represent thelocation of the user. In some embodiments the exact location of the usermay be blurred by using an inexact measure of the location, however thedisplayed location of the tracked user is still displayed using thecoordinates of the tracked user, albeit using a coarser resolution.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A-F illustrate a mobile computing device according to anexemplary embodiment;

FIG. 2 is a system component block diagram of a system according to oneexemplary embodiment;

FIG. 3 is an application diagram of a system according to an exemplaryembodiment;

FIG. 4 is a flow diagram of a method according to one embodiment; and

FIG. 5 is a flow diagram of a method according to one embodiment.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Referring to FIGS. 1-2, a user's location may be displayed usinginformation other than a coordinate-based representation of the user'slocation. A user may be tracked by determining the location of a device10 carried by or otherwise associated with the user. Information on thelocation of the device 10 may be provided to others using a non-specificand/or user-defined description for the location which may be textual,graphical, and/or take some other form. For example, if the coordinatesof the device correspond to those of a restaurant, the locationinformation may be displayed using a name such as “at a restaurant” or“at dinner” to describe the location of the user. The non-specific namesmay be predefined (e.g. a pre-defined name associated with a location, apre-defined algorithm for assigning names, etc.) or may be user-defined.For example, a user may designate the location of their house to bedisplayed as “at home.” Without more information (i.e. knowing where theperson's home is located), a third party viewing the displayed name forthe user's current location (“at home”) would not know the coordinates(exact or rough) of the user and/or device 10.

The non-specific name (i.e. the name that does not represent coordinatesin fine or coarse detail) used to identify the location of the device 10may be posted to a website (e.g. provided to a web-hosting server 148through the website or through some other interface). In someembodiments, the device 10 may monitor its location using a locationdetermining circuit 124 (as described below). In other embodiments, adevice 146,148,150 external to device 10 may monitor the location ofdevice 10 (e.g. a server may be configured to calculate the position ofdevice 10 based on which cellular towers and/or WiFi access points wereaccessed by device 10). The location data may be obtained from a GPScircuit, from a beacon configured to transmit data indicative of itslocation, from another mobile device whose location has been identified(e.g. another portable computing device may have a GPS circuit and maybe capable of sharing its location information with other devices inproximity to the other portable computing device), based on data from amotion sensing device (e.g. an accelerometer, a gyro, etc.), and/or someother location providing circuit/device.

No matter how the location of device 10 is determined, device 10 may beconfigured to receive data indicative of its location (either from thelocation determining circuit 124 or the external device 146,148,150) andconvert that location information to a non-specific and/or user-definedname that is representative of that location. Device 10 may then publishthe name representing the location (e.g. to other devices, to a website,etc.). In other embodiments, device 10 and/or external device146,148,150 may provide coordinate-based and/or other locationinformation to a server 146,148 (or some other device 150) and theserver 146,148 (or other device 150) may convert the locationinformation it receives to a non-specific (generic) and/or user-definedname associated with the location it is provided (e.g. the server146,148 may convert coordinate-based location information and/orlocation information embodied by a first generic name to a secondgeneric name, which second generic name will be published by the server146,148).

In some embodiments, the name representing the location information maybe posted to a website, such as a social networking website. In thesecases, the name may be posted to a generic field on the website (e.g. afield that is not dedicated to displaying location information, a fieldthat allows the user to enter free-form text, etc.). The device 10 maybe configured to automatically access the website using the user'saccess information and post the name associated with the currentlocation of device 10 on the website. In other embodiments, the nameassociated with the location may be used to fill in fields forapplications (e.g. an instant messaging application 202—FIG. 3) runningon the device 10.

If the names are user-defined, the user may associate more than one namewith a particular location. For example, the user may want to provideone generic name to one set of people (e.g. by posting it to onewebsite) while providing a different generic name to other users (e.g.by posting it to a different website). As another example, a user maywant to provide different names for the location on different days, atdifferent times of the day, and/or as a result of other criteria. Thesystem (e.g. device 10, server 146,148, etc.) that associates theidentified location with the name assigned to the location may beconfigured to determine which name to publish based on any number ofcriteria monitored by the system and/or based on user inputs (e.g. inresponse to a prompt).

Referring to FIGS. 2-4, a method which may be implemented by anapplication 214 of device 10, server 146,148, and/or some other device150 is described for providing generalized, non-specific locationinformation. In some embodiments, all or most of the steps of the methodare implemented entirely by an application 214 running on one device(e.g. device 10, server 146,148, or device 150). But in someembodiments, more than one of device 10, server 146,148, and device 150may implement applications 214 which, when used in combination, combineto implement the method.

In some embodiments, the method may involve receiving a user input atblock 422 to create a user-defined name that is associated with aparticular location. For example, a user may pick names that havemeaning to them, but which do not give away the specific locationwithout more information (i.e. generic names). The name may bedescriptive (e.g. “at the gym”) or may be non-descriptive (e.g. a numberunrelated to the location, but which the user can correlate to thelocation). In some embodiments, the user defined name may be selectedfrom a limited set (e.g. which a user chooses from a list such as adrop-down list) of names (e.g. home, school, work, gym, grocery store,friend's, etc.). In other embodiments, the user defined name may be freeform such that a user may enter any name that a user desires to enter(e.g. “pumping iron” for a gym, “bored to tears” for school, “home” forhome, etc.). If a user defined name is free-form (i.e. the user canenter any text such as text of any length, any text of a certain length,a predefined text followed by a free-form text, etc.), the user definedname may be non-specific such that it does not signify the actuallocation without more information, or may be as specific as a userdesires (e.g. a user may provide the name “Chicago” when in Chicago and“Milwaukee” when in Milwaukee). In some embodiments, the user-definedname may comprise a graphical image (e.g an icon) representing alocation (e.g., a picture of a house for “at home”, a picture of aschoolhouse for “at school”, etc.”), either alone or along with atextual user-defined name and/or a user-defined name in some othervisual format. Additionally (or alternatively), in some embodiments theuser-defined name may be entered, stored, and/or provided in a formatother than (or along with) a visual format (e.g. an audible format).

The user input may be received 422 on a user input device 131 of themobile computing device 10, a user input device of some other device 150(e.g. a user input device of a computer that synchronizes with themobile computing device, a user input device that interfaces with aserver which sends—pushes, makes accessible, etc. —information to themobile computing device 10, etc.), some other user input device, and/orany combination of user input devices.

In some embodiments, the user input received at block 422 may bedirected to the purpose of creating user-defined names for publishingthe location of the mobile computing device 10 (e.g. may be entered aspart of an application 214 that is configured to correlate and/orpublish user-defined names to represent the location of the device 10).For example, the user may provide an input which is received at block422 to indicate that the current location of the device 10 should beassigned a particular name. As another example, a user may be able toassign names to locations other than the current location of the device10. For instance, the user may input addresses and assign names to thoseaddresses, may assign names to coordinates (e.g. latitude and longitude)(e.g. coordinates relevant to a geo-caching website), the user mayselect a location on a map (e.g. using a graphical user interface) andassign a name to that location, and/or may provide an input in someother manner to assign names to the locations.

In some embodiments, the user input received at block 422 may be part ofanother application which receives both user defined names andlocations, but which has a primary purpose other than creating userdefined names for locations for publishing the users location. Forexample, the device 10 or server 146,148 may include a contactsapplication 218. The user provides contact information for a contact inthe contacts application 218, which contact information may includelocation information for the contact. An application 214 may analyze thecontact information received 422 in the contact application 218 tocreate user defined names. The user defined name may be based oninformation contained in each contact (e.g. at “Joe Smith” or at “Joe'sHouse”) or may be based on data associated with the contact (e.g. if thecontact is grouped with other contacts, the user defined name may be setto the name chosen for the group, such as “with family” or “at friend'shouse” or “at client's location” or “at supplier's facility”).

In some embodiments, generic and/or user-defined names (e.g. genericuser-defined names) may be received 422 from a file provided to (e.g.downloaded by) device 10 and/or server 146,148 (e.g. actively downloadedby the user, sent to the user by another user from their device, etc.).The file may contain general generic names or may contain user-definednames created on a different device (e.g. device 150, server 146, etc.)and transferred to device 10 and/or 146,148 (e.g. from server 146 todevice 10).

The name defined may also be based on various criteria other than(and/or in addition to) location (i.e. non-location criteria), such asspeed and/or devices connected to device 10. For example, if it isdetermined that a user is traveling above a normal speed of movement, ageneric name may be set as “traveling.” As another example, if a user isconnected to a docking station at the user's home or a desktop computerat the user's home, the location may be set to “at home.” As stillanother example, if device 10 is connected to a car system (e.g. aBluetooth phone system in a user's car), the name may be set as “in car”or “traveling.” As still another example, various characteristics of auser (e.g. speed, heart rate, etc.) being monitored by device 10 (eitherdirectly or receiving data indirectly) may be used to identify that auser is exercising, which may be used to set the name provided.

In some embodiments, a generic name may be chosen which is based onpoint of interest information stored in a database. For example, anavigation application 258 may include a database of information onpoints of interest. As another example, the Internet may include variousinformation relating to points of interest. The information relating tothe points of interest may be received 422 and a generic name may becreated based on this information. For instance, if the point ofinterest is a restaurant, a generic name such as “eating” or “out todinner” may be created.

The location may be defined in any manner. For example, the location maybe defined as a point (e.g. an address, coordinates, etc.), as an area(e.g. an area defined by a route such as a train route taken to work)which area may be allowed to have a regular (e.g. circular, rectangular,etc.) or irregular shape (e.g. a user drawn shape).

The name may be received 422 and associated with a location that isprovided in a location format other than that used by the analysis step434. If so, the format of the location information with which the nameis associated may be translated 426 to a location format that isoperated on by the application 214 in the analysis step 434. Forexample, in some embodiments, the location may be entered as an address,as a selection of a point on a map, as a button press indicating thatthe current location should be chosen, etc. In some embodiments, theanalysis step 434 may involve analyzing location based on a grid (e.g.based on latitude and longitude and/or other coordinates). In theseembodiments, the location associated with the user defined name may beconverted from the format in which it was entered (e.g. map, address,etc.) to the format used by the application 214 performing thecomparison (e.g. coordinates).

The received 422 location name and its association with a location (e.g.a converted 426 location) may be stored 430 in a memory (e.g. as a file,as part of a software program, etc.), such as memory 134,138 of device10, a memory of a server 146,148, a memory of device 150, and/or someother memory. Data indicative of the association (i.e. data showing,providing a basis to show, and/or suggesting the association) may bestored in any form (e.g. as a data file, along with the name data,separate from the name data, in an index, in a table, and/or in someother form). The data for the location associated with the name can alsobe saved in any form (e.g. in a data file that includes coordinates, ina data file that includes a range, in a data file that defines aboundary, in software, hard-coded, in a combination of software and adata file such as a data file that represents a location point alongwith software that automatically creates a boundary around the point,and/or may be saved in some other form). In some of these and otherembodiments, some or all of the names may be hard-coded by circuitcomponents.

In operation, an application 214 determines at block 414 whetherlocation information (e.g. tracking information) is to be provided.Location information may be provided continuously, may be providedperiodically, may be provided in response to a prompt (such as a userinput or a request from another device 146,148,150 for locationinformation), may be provided in response to monitored conditions (e.g.time of day, location, etc.), may be provide in response to an event(e.g. receipt of a text or other message), etc. Additionally (oralternatively), determining whether location information is to beprovided at block 414 may be controlled by any number of other criteriasuch as conditions monitored by or relating to the mobile computingdevice 10. For example, various criteria related to the mobile computingdevice (e.g. speed and direction) may be monitored to determine whetherthe mobile computing device is at a location or is merely passing near alocation.

If the device 10 is tracked periodically, in some embodiments the periodmay be at least (i.e. the period may be this or more than this amount)about 1, 3, 5, 10, 20, 40, 60, 90, and/or 120 minutes. In someembodiments, the period may be user definable, and/or may be userdefinable to be set at least one (and/or at least a plurality of)period(s) which is/are at least about 3, 5, 10, 20, 40, 60, 90, and/or120 minutes and/or up to about 240, 180, 120, 90, 60, 30, and/or 15minutes.

If location information is to be provided at block 414 then a currentlocation of the mobile computing device 10 is received at block 418. Thecurrent location may be received from a location-determining circuit 124of device 10. Various types of location determining circuits 124suitable for obtaining a current location are discussed below.Alternatively (or additionally), in some embodiments the currentlocation of device 10 may be determined by a device 146,148,150 separatefrom device 10 (e.g. a server 146 that determines location based on thecell towers, WiFi access points, and/or other wireless access point towhich the mobile computing device 10 is connected). The current locationmay be retained and used by the device 10,146,148,150 which determinedthe current location, or may be sent to another device (e.g. may beobtained by device 10 and sent to server 146,148, may be obtained byserver 146,148 and sent to device 10, may be obtained by a first server146 and sent to a second server 148, etc.). In some embodiments, thecurrent location may be accurate within at least 10 km, 5 km, 1 km, 740m, 500 m, 250 m, 100 m, 50 m, 25 m, 10 m, 5 m, and/or 1 m. However insome embodiments (including some of these embodiments), the currentlocation received at block 418 and operated on later in the method (e.g.at block 434) may not need to be highly accurate; the location datareceived may not need to be provided at a high degree of specificity. Insome embodiments, at least some of the location data received 418 by andoperated 434 on may not have an accuracy of (with high confidence)closer than 1 m, 5 m, 10 m, 25 m, 50 m, 100 m, 200 m, 400 m, 600 m, 800m, 1 km, and/or 2 km (e.g. if the system operates on a rough calculationobtained from the location determining circuit 124 before the locationdetermining circuit 124 was capable of providing a highly accuratereading). In some embodiments, the specificity required may be userselectable.

Once the current location of the mobile computing device 10 is receivedat block 418, the current location may be analyzed 434 with respect to(e.g. compared to) the locations associated with the names stored 430 inthe memory. The analysis 434 may include a comparison of the currentlocation to an area defined by the stored 430 association, may involvedetermining the distance from the current location to the locationstored 430, may involve determining a speed and/or direction of movementof the mobile computing device 10 (e.g. to determine whether the mobilecomputing device 10 is stopping at the location or merely passing by),and/or may involve analysis of any number of other criteria. Any ofthese criteria may be used to determine whether the current location ofthe mobile computing device is associated with a name stored in memory(e.g. generic, user-defined name). For any of these criteria that areevaluated (e.g. distance between a location stored 430 in memory and thecurrent location), the value used when evaluating the criteria (e.g. howclose the current location 418 needs to be to the stored 430 location)may be user-definable and/or may be defined based on the values of othermonitored criteria.

If there is no match at block 442, the application 214 may return toblock 414 to start the back at the step of determining whether thecurrent location of the device 10 should be published. Alternatively, ifthere is no match, the application 214 may proceed along path 442 toblock 462 to set a location name. For example, the current location maybe set 462 to be represented by a default name (e.g. “out,” “around,”“unknown,” “none of your business,” “ ”, etc.) when the current locationdoes not match a location stored 430 in the memory. As another example,the current location may be set 462 to be represented by a blank entry(e.g. a blank name may be published, a command to clear the last namepublished may be sent, etc.) when the current location does not match alocation stored 430 in the memory (e.g. to remove a location namepreviously published 470 which is no longer the current location of thedevice 10).

If there is a match from the comparison at block 434, the systemproceeds 438 to block 446 to determine whether more than one name isassociated with the current location. This may occur if two locationsare located in proximity to each other or have overlapping areas. Thismay also occur if a user has defined more than one name for a particularlocation. For example, a user might set the application 214 to post thelocation of device 10 to multiple sites (e.g. multiple websites, awebsite and an application on device 10, etc.) that are intended fordifferent audiences and might choose to post different names to describethe location to the different sites. As another example, a user may wishto describe the same place by different names depending on the user'smood or some other criteria (e.g. time of day).

If more than one name is associated with a location at block 446, themethod 410 proceeds at path 450 to block 458 to determine which name topublish. Determining which name to publish at block 458 may involvedetermining which of the multiple locations in proximity to the currentlocation is closest to the current location, may involve prompting theuser to select a name, may involve determining the site to which thename will be published, may involve a hierarchy such that certain namesreceive priority over others, may involve analyzing user preferences(e.g. stored in a file), etc. The name determined at block 458 may bedetermined based on monitored criteria other than location. For example,the name determined at block 458 may be based on time and dateinformation such as day of the week, time of day, etc. (e.g. if thedevice 10 is in proximity to a restaurant and the time of day is in theevening, the name chosen may be “at dinner” whereas if the time of daywere around noon the name chosen may be “at lunch”).

Once the name to provide has been determined at block 458 or if only onename is associated with the location at block 462 (so proceeds alongpath 454), the name to be used to represent the current location is setat block 462. A name that is set at block 462 may then be provided atblock 470. In some embodiments, providing location information at block470 may include providing the location information to an applicationwhich uses the information wholly within the device 10 being tracked(e.g. a journaling application 254 that does not regularly publishinformation). In some embodiments, providing information at block 470may include publishing the name (e.g. provide the name directly to or ina manner reviewable by devices 150 other than the device 10 beingtracked). Examples of devices to which the name representing thelocation may be published include providing the location name to othermobile computing devices, providing the location name to a displayseparate from and not controlled directly by the device 10, providingthe location information to a server 146,148 which server 146,148 maypublish the information to other devices 150 (e.g. by providing thelocation information on an Internet website and/or other networkaccessible site). If sent directly to other mobile devices, the othermobile devices (and/or device 10) may be configured to implement anapplication designed to track one or more other devices based on genericor user-defined names (and/or based on coordinate-based location data).

Publishing 470 may involve sending the name directly to another device,may involve posting the location on a website, may involve providing thename in another application which makes the name viewable by otherdevices (e.g. in a field of an instant messaging (IM) application202—such as a field available for describing the user of the IMapplication—viewable by at least some of those with whom the IM sessionis established), and/or may involve some other type of publishing. Onedevice 10 may publish to another device 150 by sending a message (e.g. amobile device and/or a phone messaging message such as a textmessage—e.g. an SMS message—an MMS message, etc.), by using an interfacesuch as an application programming interface (API) like arepresentational state transfer (REST) API, and/or by some other method.

If the name representative of the current location is published on awebsite or used in an application (or published in some other manner),the name may be posted in a field dedicated to tracking users or may beposted in a field that is not designed for and/or dedicated to trackingusers. For example, the name may be posted on a website or in a GUI ofan application in a field that is open to receipt of text, which fieldmay be used for purposes other than tracking a user. For websites withtext fields, a user may allow the application 214 to post the locationname associated with the current location of device 10 in the text fieldautomatically (e.g. continuously; based on criteria other than thosediscussed above such as time of day, a user flag set to turn the featureon, a response from a user to a prompt regarding whether to publish thelocation, etc.).

If more than one name is to be published (e.g. if different locationnames are provided to different receiving devices 146,148,150), themethod may return to block 458 along line 466 to determine 458 and set462 a new location name which is then published 470.

The recipient (e.g. recipient device 146,148,150 such as a recipientmobile device 150 or recipient server 148 of a website; recipientperson; etc.) receiving the published name for the location of device 10may then display 474 the name it receives. The name may be displayed 474in a field dedicated to displaying location information, may bedisplayed 474 in a field directed to providing general information abouta user of the device 10, may be displayed 474 in a text addressablefield, and/or may be displayed 474 in some other manner.

If the information to be published will be published to a website orsome other server-based system at block 470, the method may involvereceiving access information from a user at block 478 such that thedevice(s) 10,146,148,150 having the application(s) implementing themethod may automatically access the server 146,148 receiving theinformation. The access information provided at block 478 may includeinformation such as a user login, a user password, a link to thewebsite, website interface access information, an identification of afield on the website where the location name should be entered, anindication of where to upload information to the server 146,148, etc.The access information provided at block 478 may be provided in itsentirety at block 478, or the information provided at block 478 may besupplemented at block 486 by stored generic profiles that store accessinformation for one, a plurality, and/or a multiplicity of servers (e.g.websites). The generic access profiles provided at block 486 may bestored in a memory of the device 10,146,148,150 implementing the method(e.g. memory 134,138 of device 10), may be downloaded from the server146,148 or device 150 to which the name will be published 470, may bedownloaded from a server 146,148 other than the one to which the namewill be published 470, and/or may be provided from some other source.The generic access profiles provided at block 486 may be used tosupplement the information provided at block 478, may be used to directthe type of information received at block 478, may be used to controlthe type of information requested from a user to be received at block478, etc.

Journaling Application

Referring to FIG. 3, a device 10 and/or other system may be configuredto implement a journaling application 254. Journaling application 254may be configured to receive the user-defined/generic names andautomatically enter information in a journal based on these names. Inother embodiments, journaling application 254 may not enter theinformation in a journal, but may consolidate and/or otherwise make thisinformation available to a user so that the user can consult thislocation information history when making journal entries. Journalingapplication 254 may also gather information from any number of otherapplications such as an imaging application 212 (e.g. collecting imagesassociated with what the user did), a calendar application 216 (e.g.showing meetings a user had scheduled), a notes application 256 (e.g. toshow what files a user worked with), a task application (e.g. to showwhat tasks were entered and/or completed), a phone application 230 (e.g.to show who a user talked with and/or for how long), a messagingapplication 202 (e.g. to show who a user messaged that day), and/or someother application. Like the location information, journaling application254 may be configured to enter the information from these otherapplications in a journal, may be configured to enter information fromonly a subset of these applications in a journal, may not be configuredto enter the information from one or more of these applications in ajournal but be configured to make this information available to a userso that the user can consult this information when making journalentries, etc.

Location-Based Reminders

Referring to FIGS. 2 and 3, a device 10 may be configured to implement atask application 222 and/or a note application 256 based on locationinformation obtained from a location application 214. For example, theapplication 222,256 may be configured to allow a user to associate anentry (note, task, etc.) with a location. When location application 214provides a current location that approaches that location, theapplication 222,256 may be configured to prompt a user which may bevisual, audible, tactile, and/or may take some other form (e.g. with analarm, by displaying the note or task, by vibrating, etc.). In oneadvantageous embodiment, the application 222,256 may be configured toprompt a user based on a determination that device 10 is leaving thelocation. For example, a user may have a set of notes and/or tasks setto be displayed to the user as the user leaves their work, their house,school, etc. In this way, a user may set reminders to be played whenmost likely to be acted on by the user. Whether device 10 is leaving alocation may be judged by one or more of any number of criteria inaddition to location, such as the direction device 10 is traveling,whether device 10 crossed one or more boundaries around the location(e.g. a pre-drawn boundary, a radius from a specific location, etc.),and/or other criteria.

The location for a reminder (either approaching or leaving) may be setas a specific location (e.g. a specific address) or may be set to ageneral location (e.g. a grocery list may be set to provide a reminderat a “grocery store” or “Company X grocery store” such that when thedevice 10 approaches any grocery store meeting the criteria, the devicewill provide a reminder to the user). The device 10 may have a list oftypes of locations, may store a list of locations that a user frequentsand then use the locations from that list to determine whether thelocation criteria is satisfied, may access information from a server(e.g. website), may access information over the Internet, may accessinformation stored on a device with which the device 10 communicates,and/or may obtain the information from any other source.

Additionally, the location may be a moving location. For example, a usermay set the location as a reminder to buy ice cream if they become inproximity to an ice cream truck. As another example, the user may set areminder that provides notes about something the user is supposed todiscuss with another person whose location is being monitored (e.g.through a device carried by that person). Here, the first party's devicemay have a reminder that includes information relating to the secondparty (e.g. ask employee if he's filled out a particular report), thesecond party may carry a mobile device (or other location providingdevice) that broadcasts its location to the first party's mobile device10 (either directly or indirectly such as by way of a server), and thefirst party's device 10 may determine that the second party is nearingthe first party and so the device 10 provides a notification which mayinclude the information from the reminder.

The location for the reminder may be set based on data provided from acontacts application 218, a calendar application 216, and/or some otherapplication. The location for a task or note may be defined bynon-specific and/or user-defined names associated by the user with aparticular location.

The notes or tasks associated with the location may be set on the devicerunning the application 222,256, by the user of the device on a deviceother than the device implementing the application 222,256, and/or by athird party.

In some embodiments, the task 222 and/or note 256 application runs onthe device 10 being tracked. In other embodiments, the applications222,256 may run on a server which receives information relating to thelocation of the device 10 being tracked. In these embodiments, theserver may be configured to send data to the device 10 when the criteriafor the note and/or task is met.

Referring to FIG. 5, a user inputs and a system receives a task at block510. The information inputted by the user may include a description ofthe task, information related to completion of the task (e.g. a locationwhere the task can be completed, a name of a store where to complete thetask, a class (e.g. grocery store) of places where the task can becompleted, etc.). The system for inputting tasks may be arranged suchthat a user can group tasks with a common location (e.g. using a tasktree or other mechanism for grouping tasks).

In some embodiments, tasks may be automatically input by a system andreceived by the system implementing the method of FIG. 5. For example, auser's device may have a data link with another system (e.g. a car), andthe other system may be configured to input tasks in the device based onmonitored criteria of the other system (e.g. input a need gas task whenthe car is running low on gas).

In some embodiments, a user may input a location for completing the taskwhen the task is entered. Alternatively (or additionally), the systemmay be configured to receive task information and identify locations forcompleting the task based on the nature of the task. For example, thesystem may interpret a task list entry “pick up milk” as being completedat a grocery store and/or a convenience store.

In some embodiments, a task list may be shared between multiple people.For example, a task can be input by another system based on a task inputby a user on a different task list. The input task information may beprovided at block 511 and entered in to the task database at block 512.

In some embodiments, a task may be sent to a first user (e.g. by adevice or system of the first user) to a second user (e.g. to a deviceor system of the second user). The first user may send the taskinformation by inputting it into a server, by sending a message (e.g. ane-mail message, a text message, an SMS message, etc.), by synching aprogram, and/or by some other means. The task may be received at block511 (e.g. obtained, opened, saved, accepted, etc.) and entered into thetask database at block 512 for the second user. The tasks at block 511may contain any of the information discussed above for a task entered atblock 510.

The task information may be used to populate a task database at block512, which may include one or more of task information, locationinformation associated with the task information, user preferenceinformation associated with the task information, and/or otherinformation.

In some embodiments, the method involves pre-loading locationinformation at block 514 based on the information in the task databaseat block 512 (e.g. based on and/or in response to the tasks entered atblock 510). Pre-loading information may include downloading locationinformation (e.g. coordinate information) where a user can complete thetask. The pre-loaded information may be limited based on userpreferences stored at block 516, may be limited based on user tendencies(e.g. the system may look for locations along the path commonly taken bythe user which may be manually entered by the user, may be passivelyobserved by the system, may be saved in a file, etc.), may be limitedbased on availability (e.g. based on what stores might be open at aparticular time for a task to be completed) and/or may be limited basedon other information.

User preferences at block 516 may be based on a user input indicative ofthe preferences, based on responses to questions indicative ofpreferences, based on monitoring other applications and/or otherinformation associated with the user, and/or based on other sources ofinformation relating to preferences. For example, a user's device may bemonitored for logging on to a particular bank's website. By accessingthat website, a system might presume that it is likely that a user hasan account at that bank. If a task is “pick up cash,” “cash check,”and/or some other banking task, then the system may be designed to guidea user to a banking location (bank, ATM, etc.) associated with thatbank.

In some embodiments, the information may be pre-loaded to a device whena task is entered, and/or may be pre-loaded during selected periods. Theselected periods may include while a mobile device has externallysupplied power, may include while a mobile device is not being used forother purposes, may include specific times of day, may include inresponse to a user input to pre-load information, etc. The pre-loadedinformation may be obtained from a database local to the system, may beobtained from a database maintained on a server, may be received byscanning multiple different databases, may be obtained from a databaseover a network such as the Internet, and/or may be obtained from someother source.

A system may be configured to receive a current location of a deviceassociated with the user at block 518. The location information may beobtained in any of the manners discussed above or below (e.g. bymonitoring a GPS unit of a mobile device associated with the user, bynoting the locations of wireless access points accessed by a device, byreceiving location information sent by a device associated with thelocation of the user that communicates with the system running the tasklocation program, etc.).

The system is configured to identify locations in proximity to the usercapable of completing the task at block 520. Identifying locations inproximity to the user for completing the task may include comparingcurrent location of the user with the pre-loaded location data stored inthe task database at block 512. Alternatively (or additionally), thecurrent location of the user may be used to query, at block 520, adatabase or other information source for locations capable of completingthe task. The locations retrieved at block 520 may be limited in any oneor more of the manners discussed above for block 514. The locationsretrieved at block 520 (whether retrieved initially or based onpre-loaded data) may also be limited based on the current location,direction, speed, and/or other criteria related to the device. In someembodiment, the system may be configured to identify locations fartherahead of the user in the direction that the user is traveling when theuser is traveling at high speeds in order to give the user time tochoose the location. In some embodiments, the system may be configuredto not retrieve and/or notify (see block 522) a user of a location forcompleting a task if the user is traveling above a threshold (fixed orvariable) speed and/or based on other criteria (such as road work in thevicinity of the user, traffic conditions in proximity to the user, userpreferences, the complexity of the route of the user, etc).

Once locations are identified, a user may be notified at block 522 oftheir proximity to a location where a task can be completed. Thenotification may be audible (a tone such as a user settable tone, a textto speech module that speaks the name of a location, etc.), tactile(e.g. vibration), and/or visual (e.g. a flashing light such as aflashing LED, an image on a graphical user display such as an icon, amap showing a location where the task can be completed, usercontrollable options such as to route to the location, and/or some othervisual notification). The notification at block 522 may also beimplemented as a message (e.g. an e-mail, SMS, or text message) and/ormay be implemented on a separate device (e.g. played through a speakermounted in a vehicle).

Once a user is notified, the system may wait for an input (e.g. a userinput to clear the alarm, a user entering an identified location toclear the alarm, a user input to route to the location, a user input todisplay alternative locations, etc.). If an input is received to displaymultiple locations in proximity to the user for completing the task, thesystem may be configured to display multiple options at block 526 andallow a user to input a selection of a particular location at block 524.A user may also input a request to route to the displayed and/orselected location, so the system may be configured to generate one ormore routes to the selected location at block 534 discussed below.

In addition to monitoring for proximity to locations for completingtasks, the system may also be configured to provide a route to alocation for completing a task in response to receiving a request for aroute (from a user, from another application on the system, from anothersystem, etc.) at block 530. The route may be designed to head tolocations to complete all tasks (along line 531), and/or a user may beallowed along line 529 to select a subset (e.g a single or group oftasks) of tasks at block 528.

Once the tasks to be completed are identified, one or more locationsassociated with each task may be obtained at block 532, which block mayoperate in any of the manners discussed above for block 520, includingidentifying locations based on pre-loaded location information.

The locations identified at block 532 are used to generate one or moreroutes at block 534. In some embodiments, generating a route at block534 may include accessing stored route and/or preference informationfrom a user to identify common routes and/or route preferences. In someembodiments, generating a route at block 534 may include displayingmultiple location options to a user (singularly and/or grouped) andallowing a user to select individual locations. In some of theseembodiments, information in addition to the location (e.g. the amount oftime each location would add to the route) may be displayed along withthe different locations. In some embodiments, generating a route atblock 534 may include prompting a user for an input (e.g. if they wantto use the highway, get the most use of the highway, get the least useof the highway, avoid tolls, take a scenic route, avoid construction,avoid traffic, etc.). In some embodiments, the system may be configuredto generate a route at block 534 based on traffic information (e.g.currently monitored traffic information, historical traffic informationfor a location at a given time) and/or any other information (e.g. timeof day, common routes of a user, traffic light patterns, etc.). In someembodiments, generating a route at block 534 may include generating theroute based on the operating hours (e.g. based on a database such as awebsite associated with the location and/or an information gatheringsource) of the locations identified and/or selected for completing thetask (e.g. to give a user the best opportunity to go to each of thelocations during the location's operating hours).

If more than one route is generated at block 534, a user may be allowedto select a desired route at block 536. The generated 534 and/orselected 536 route is then displayed at block 538. Displaying a route atblock 538 may be include displaying the route on the system creating theroute and/or transferring the route to another system (e.g. wirelesslyover a point-to-point, local area, and/or wide area network) whichsystem may display the route.

In many embodiments, the tasks received at block 510 may includedeadlines in addition to other information. In some embodiments, thedeadline associated with the task may be used to control the displayedlocation(s) for completing the task. For example, proximity to thecurrent location needed to identify a location associated with a task atblock 520 or 532 may become less proximate as the time (e.g. date) getscloser to the deadline. In many embodiments, the system may beconfigured to notify a user at block 522 based on an approachingdeadline as well as being in proximity to a location to complete a task.

In some embodiments where a specific location or class of locations(e.g. grocery store, hardware store, swimming pool, etc.), one or moreof pre-loading at 514, identifying at 520, and identifying at 532 may beimplemented based on the location (e.g. class of locations) entered withtask, on similar locations (e.g. if a particular grocery store isentered, the system may load and/or identify other locations forcompleting the task), and/or related locations (e.g. other storesbelonging to the same chain of stores as a store identified).

Any of the steps described in FIG. 5 may be implemented in a mobiledevice 10 (FIG. 1) associated with a user (e.g. by a processing circuitsuch as a microprocessor configured to implement the method), in aserver system (e.g. in one or more processing circuits of one or moreservers 146 (FIG. 2) which may or may not be located in a commonlocation that is/are configured to implement the method), and/or on someother device 150 (FIG. 2). In some embodiments, the method isimplemented primarily in a mobile device 10 (e.g. all or any of thesteps are implemented by the mobile device 10, although some steps maybe implemented in another device) associated with the user. In someembodiments, the method is implemented primarily in a server system 146.In some embodiments, the method is implemented primarily in acombination of a mobile device 10 associated with the user and a serversystem 146. In many embodiments, the current location of the user isobtained at block 518 by a location determining circuit 124 associatedwith (e.g. built in) the mobile device 10. In some embodiments, thecurrent location at block 518 is obtained based on a wireless network(e.g. cell or WiFi network) accessed by the mobile device.

Other Features

Referring back to FIG. 2, portable device 10 may be a mobile computingdevice capable of executing software programs. The device 10 may beimplemented as a combination handheld computer and mobile telephone,sometimes referred to as a smart phone. Examples of smart phonesinclude, for example, Palm® products such as Palm® Treo™ smart phones.Although some embodiments may be described with portable device 10implemented as a smart phone by way of example, it may be appreciatedthat the embodiments are not limited in this context. For example,portable device 10 may comprise, or be implemented as, any type ofwireless device, mobile station, or portable computing device with aself-contained power source (e.g., battery) such as a laptop computer,ultra-laptop computer, personal digital assistant (PDA), cellulartelephone, combination cellular telephone/PDA, mobile unit, subscriberstation, user terminal, portable computer, handheld computer, palmtopcomputer, wearable computer, media player, camera, pager, messagingdevice, data communication device, and so forth.

Processing circuit 132 of hand-held device 10 may include one or more ofa microprocessor 126, second microprocessor 126, image processingcircuit 116, display driver 118, a memory (e.g. non-volatile memory—NVM)controller 128, audio driver 122 (e.g. D/A converter, A/D converter, anaudio coder and/or decoder (codec), amplifier, etc.), and otherprocessing circuits. Processing circuit 132 can include various types ofprocessing circuitry, digital and/or analog, and may include one or moreof a microprocessor, microcontroller, application-specific integratedcircuit (ASIC), field programmable gate array (FPGA), or other circuitryconfigured to perform various input/output, control, analysis, and otherfunctions. In various embodiments, the processing circuit 132 mayinclude a central processing unit (CPU) using any suitable processor orlogic device, such as a as a general purpose processor. Processingcircuit 132 may include, or be implemented as, a chip multiprocessor(CMP), dedicated processor, embedded processor, media processor,input/output (I/O) processor, co-processor, a microprocessor such as acomplex instruction set computer (CISC) microprocessor, a reducedinstruction set computing (RISC) microprocessor, and/or a very longinstruction word (VLIW) microprocessor, a processor implementing acombination of instruction sets, a controller, a microcontroller, anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a programmable logic device (PLD), or otherprocessing device in accordance with the described embodiments.

Processing circuit 132 may be configured to digitize data, to filterdata, to analyze data, to combine data, to output command signals,and/or to process data in some other manner. Processing circuit 132 maybe configured to perform digital-to-analog conversion (DAC),analog-to-digital conversion (ADC), modulation, demodulation, encoding,decoding, encryption, decryption, etc. Processing circuit 132 (e.g. anapplications microprocessor 126) may be configured to execute varioussoftware programs such as application programs and system programs toprovide computing and processing operations for device 10.

Processing circuit 132 may also include a memory that stores data.Processing circuit may include only one of a type of component (e.g. onemicroprocessor), or may contain multiple components of that type (e.g.multiple microprocessors). Processing circuit 132 could be composed of aplurality of separate circuits and discrete circuit elements. In someembodiments, processing circuit 132 will essentially comprise solidstate electronic components such as a microprocessor (e.g.microcontroller). Processing circuit 132 may be mounted on a singleboard in a single location or may be spread throughout multiplelocations which cooperate to act as processing circuit 132. In someembodiments, processing circuit 132 may be located in a single location(e.g. in proximity and/or on a common circuit carrying element such as acircuit board) and/or all the components of processing circuit 132 willbe closely connected.

Components shown as part of a single processing circuit 132 in thefigures may be parts of separate processing circuits in variousembodiments covered by the claims unless limited by the claim to asingle processing circuit (e.g. location circuit 124 may be part of aseparate assembly having a separate microprocessor that interfaces withprocessing circuit 132 through data port 140).

Hand-held device 10 may also include a network transceiver 144.Transceiver 144 may operate using one or more of a LAN standard, a WLANstandard, a Bluetooth standard, a Wi-Fi standard, an Ethernet standard,and/or some other standard. Network transceiver 144 may be a wirelesstransceiver such as a Bluetooth transceiver and/or a wireless Ethernettransceiver. Wireless transceiver 144 may operate using an IEEE 802.11standard. Hand-held device 10 may also include an external deviceconnector 140 (such as a serial data port) for transferring data.External device connector 140 may also serve as the connector 152 to anexternal power supply. Hand-held device may contain more than one ofeach of transceiver 144 and external device connector 140. For example,network transceiver 144 may include both a Bluetooth and an IEEE 802.11transceiver.

Network transceiver 144 may be arranged to provide voice and/or datacommunications functionality in accordance with different types ofwireless network systems. Examples of wireless network systems mayinclude a wireless local area network (WLAN) system, wirelessmetropolitan area network (WMAN) system, wireless wide area network(WWAN) system, and so forth. Examples of wireless network systemsoffering data communication services may include the Institute ofElectrical and Electronics Engineers (IEEE) 802.xx series of protocols,such as the IEEE 802.11a/b/g/n series of standard protocols and variants(sometimes referred to as “WiFi”), the IEEE 802.16 series of standardprotocols and variants (sometimes referred to as “WiMAX”), the IEEE802.20 series of standard protocols and variants, and so forth.

Hand-held device 10 may be capable of operating as a mobile phone. Themobile phone may use transceiver 144 and/or may use a cellulartransceiver 136. Cellular transceiver 136 may be configured to operateas an analog transceiver, a digital transceiver (e.g. a GSM transceiver,a TDMA transceiver, a CDMA transceiver), or some other type oftransceiver. Cellular transceiver 136 may be configured to transfer data(such as image files) and may be used to access the Internet 142 inaddition to allowing voice communication. Cellular transceiver 136 maybe configured to use one or more of an EV-technology (e.g. EV-DO, EV-DV,etc.), an EDGE technology, a WCDMA technology, and/or some othertechnology.

Transceiver 144 may be arranged to perform data communications inaccordance with different types of shorter range wireless systems, suchas a wireless personal area network (PAN) system. One example of awireless PAN system offering data communication services includes aBluetooth system operating in accordance with the Bluetooth SpecialInterest Group (SIG) series of protocols, including BluetoothSpecification versions v1.0, v1.1, v1.2, v2.0, v2.0 with Enhanced DataRate (EDR), etc. —as well as one or more Bluetooth Profiles, etc. Otherexamples may include systems using an infrared technique.

Cellular transceiver 136 may provide voice communications functionalityin accordance with different types of cellular radiotelephone systems.Examples of cellular radiotelephone systems may include Code DivisionMultiple Access (CDMA) cellular radiotelephone communication systems,Global System for Mobile Communications (GSM) cellular radiotelephonesystems, North American Digital Cellular (NADC) cellular radiotelephonesystems, Time Division Multiple Access (TDMA) cellular radiotelephonesystems, Extended-TDMA (E-TDMA) cellular radiotelephone systems,Narrowband Advanced Mobile Phone Service (NAMPS) cellular radiotelephonesystems, third generation (3G) systems such as Wide-band CDMA (WCDMA),CDMA-2000, Universal Mobile Telephone System (UMTS) cellularradiotelephone systems compliant with the Third-Generation PartnershipProject (3GPP), and so forth.

In addition to voice communications functionality, the cellulartransceiver 136 may be arranged to provide data communicationsfunctionality in accordance with different types of cellularradiotelephone systems. Examples of cellular radiotelephone systemsoffering data communications services may include GSM with GeneralPacket Radio Service (GPRS) systems (GSM/GPRS), CDMA/1xRTT systems,Enhanced Data Rates for Global Evolution (EDGE) systems, Evolution DataOnly or Evolution Data Optimized (EV-DO) systems, Evolution For Data andVoice (EV-DV) systems, High Speed Downlink Packet Access (HSDPA)systems, High Speed Uplink Packet Access (HSUPA), and so forth.

Hand-held device 10 may include one or more user input devices 131 (e.g.button, switch, touch screen, keyboard, keypad, voice command circuit,etc.) for registering commands from a user on device 10. Some or all ofuser input devices 131 may interface with a switch control circuit (notshown) configured to interpret which switches have been actuated. Userinput device 131 may include an alphanumeric keyboard. The keyboard maycomprise, for example, a QWERTY key layout and an integrated number dialpad. A keyboard integrated into a hand-held device would typically be athumb keyboard. User input device 131 may also include various keys,buttons, and switches such as, for example, input keys, preset andprogrammable hot keys, left and right action buttons, a navigationbutton such as a multidirectional navigation button, phone/send andpower/end buttons, preset and programmable shortcut buttons, a volumerocker switch, a ringer on/off switch having a vibrate mode, and soforth. Any of user input devices 131 may be concealable behind a body(e.g. a sliding body, a flip-out body, etc.) such that they are hiddenwhen the body is in a first position and visible when the body is in thesecond position.

Hand-held device 10 may include one or more location determiningcircuits 124 (e.g. a GPS circuit and/or a cell-based locationdetermining circuit) configured to determine the location of device 10.Device 10 may be configured to receive inputs from more than onelocation determining circuit 124. These inputs can be compared such thatboth are used, one (e.g. a cell-based system) can be used primarily whenthe other (e.g. GPS) is unable to provide reliable location information,or can have some other functional relationship.

Device 10 may use one or more different location determining techniquesto derive the location of the device 10 based on the data from locationdetermining circuit 124.

For example, device 10 may use one or more of Global Positioning System(GPS) techniques, Cell Global Identity (CGI) techniques, CGI includingtiming advance (TA) techniques, Enhanced Forward Link Trilateration(EFLT) techniques, Time Difference of Arrival (TDOA) techniques, Angleof Arrival (AOA) techniques, Advanced Forward Link Trilateration (AFTL)techniques, Observed Time Difference of Arrival (OTDOA), EnhancedObserved Time Difference (EOTD) techniques, Assisted GPS (AGPS)techniques, hybrid techniques (e.g., GPS/CGI, AGPS/CGI, GPS/AFTL orAGPS/AFTL for CDMA networks, GPS/EOTD or AGPS/EOTD for GSM/GPRSnetworks, GPS/OTDOA or AGPS/OTDOA for UMTS networks), and so forth.

Device 10 may be arranged to operate in one or more positiondetermination modes including, for example, a standalone mode, a mobilestation (MS) assisted mode, and/or a MS-based mode. In a standalonemode, such as a standalone GPS mode, the mobile computing device 10 maybe arranged to autonomously determine its position without networkinteraction or support. When operating in an MS-assisted mode or anMS-based mode, however, device 10 may be arranged communicate over aradio access network (e.g., UMTS radio access network) with a positiondetermination entity (PDE) such as a location proxy server (LPS) and/ora mobile positioning center (MPC).

In an MS-assisted mode, such as an MS-assisted AGPS mode, the PDE may bearranged to determine the position of the mobile computing device. In anMS-based mode, such as an MS-based AGPS mode, device 10 may be arrangedto determine its position with only limited periodic assistance from thePDE. In various implementations, device 10 and the PDE may be arrangedto communicate according a suitable MS-PDE protocol (e.g., MS-LPS orMS-MPC protocol) such as the TIA/EIA standard IS-801 message protocolfor MS-assisted and MS-based sessions in a CDMA radiotelephone system.

When assisting device 10, the PDE may handle various processingoperations and also may provide information to aid positiondetermination. Examples of assisting information may includesatellite-based measurements, terrestrial-based measurements, and/orsystem-based measurements such as satellite almanac information, GPScode phase measurements, ionospheric data, ephemeris data, timecorrection information, altitude estimates, timing offsets,forward/reverse link calibration, and so forth.

In various implementations, the assisting information provided by thePDE may improve the speed of satellite acquisition and the probabilityof a position fix by concentrating the search for a GPS signal and/ormay improve the accuracy of position determination. Each position fix orseries of position fixes may be available at device 10 and/or at the PDEdepending on the position determination mode. In some cases, data callsmay be made and assisting information may be sent to device 10 from thePDE for every position fix. In other cases, data calls may be made andassistance information may be sent periodically and/or as needed.

Hand-held device 10 may include one or more audio circuits 120 (e.g.speakers, microphone, etc.) for providing or receiving audio informationto or from a user. In one example, hand-held device 10 includes a firstspeaker 120 designed for regular phone operation. Hand-held device 10may also include a second speaker 120 for louder applications such asspeaker phone operation, music or other audio playback (e.g. an mp3player application), etc. Hand-held device 10 may also include one ormore audio ports 120 (e.g. a headphone connector) for output to anexternal speaker and/or input from an external microphone. Audio circuit120 may be under the control of one or more audio drivers 122 which mayinclude D/A converters and/or an amplifier.

Hand-held device 10 may include a camera 112 for taking pictures usingdevice 10. Camera 112 may include a CCD sensor, a CMOS sensor, or someother type of image sensor capable of obtaining an image (particularly,images sensors capable of obtaining an image formed as an array ofpixels). The image sensor may have a resolution of at least about 65,000pixels or at least about 1 megapixel. In some embodiments, the imagesensor may have a resolution of at least about 4 megapixels. Camera 112may also include read-out electronics for reading data from the imagesensor. Image processing circuit 116 may be coupled to the camera 112for processing an image obtained by the camera. This image processingmay include format conversion (e.g. RGB to YCbCr), white balancing, tonecorrection, edge correction, red-eye reduction, compression, CFAinterpolation, etc. Image processing circuit 116 may be dedicatedhardware that has been optimized for performing image processing.

Hand-held device 10 may include a display 114 for displaying informationto a user. Display 114 could be one or more of an LCD display (e.g. atouch-sensitive color thin-film transistor (TFT) LCD screen), anelectroluminescent display, a carbon-nanotube-based display, a plasmadisplay, an organic light emitting diode (OLED) display, and some othertype of display. Display 114 may be a touch screen display such that auser may input commands by approaching (e.g. touching) display 114(including touch screens that require a specialized device to inputinformation). Display 114 may be a color display (e.g., 16 or more bitcolor display) or may be a non-color (e.g. monotone) display. Display114 may be controlled by a display driver 118 that is under the controlof a microprocessor 126. In some embodiments, display 114 may be usedwith a stylus. Display 114 may be used as an input to a handwritingrecognizer application.

Hand-held device 10 may include a dedicated memory 134 fixed to device10. Memory 134 may be implemented using any machine-readable orcomputer-readable media capable of storing data such as erasable ornon-erasable memory, writeable or re-writeable memory, and so forth.Dedicated memory 134 may be a non-volatile memory, may be a volatilememory, or may include both volatile and non-volatile memories. Examplesof machine-readable storage media may include, without limitation,random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM(DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), read-only memory(ROM), programmable ROM (PROM), erasable programmable ROM (EPROM),electrically erasable programmable ROM (EEPROM), flash memory (e.g., NORor NAND flash memory), content addressable memory (CAM), polymer memory(e.g., ferroelectric polymer memory), phase-change memory, ovonicmemory, ferroelectric memory, silicon-oxide-nitride-oxide-silicon(SONOS) memory, magnetic or optical cards, or any other type of mediasuitable for storing information. In one embodiment, fixed memory 134 isa non-volatile memory.

Although the memory 134 is shown as being separate from and external toprocessing circuit 132 some portion or the entire memory 134 may beincluded on the same integrated circuit as processing circuit 132 (e.g.the same integrated circuit as microprocessor 126).

Hand-held device 10 may include a removable memory port 138 configuredto receive a removable memory medium, and/or other components. Removablememory port 138 may also serve as an external device connector 140. Forexample, removable memory port may be an SDIO card slot which can beused to receive memory cards, receive cards input and/or output data,and combined cards having both memory and input/output functions.

Memory 134 and/or memory 138 may be arranged to store one or moresoftware programs to be executed by processing circuit 132.

Dedicated memory 134 and removable memory 138 may be connected to and/orunder the control of a common memory controller 128 such as anon-volatile memory controller. Memory controller 128 may be configuredto control reading of data to and writing of data from dedicated memory134 and/or removable memory 138.

Handheld device 10 may be configured to connect to one or more servers146,148 via a network 142 (such as the Internet) using one or more ofnetwork transceiver 144, cellular transceiver 136, and external deviceconnector 140.

Hand-held device 10 may also include a power supply circuit 152configured to regulate power supply in hand-held device 10. Power supplycircuit 152 may be configured to do one or more of control charging ofbattery 156, to communicate the amount of power remaining in battery156, determine and/or communicate whether an external power supply isconnected, switch between the external power supply and the battery,etc. Battery 156 may be a rechargeable battery and may be removable ormay be fixed to device 10. Battery 156 may be formed from any number oftypes of batteries including silver-based batteries (e.g. silver-zinc,magnesium-silver-chloride, etc.), a lithium-based battery (e.g.lithium-ion, lithium-polymer, etc.), a nickel-based battery(nickel-cadmium, nickel-metal-hydride, etc.), zinc-based batteries (e.g.silver-zinc, carbon-zinc, etc.), etc. External power supply connector134 may be configured to be connected to a direct current source, analternating current source, or both DC and AC sources.

Device 10 may have an optical viewfinder (not shown), may use display114 as a digital viewfinder, may include some other type of view finder,may include multiple types of view finders, or may not include a viewfinder.

Device 10 may be configured to connect to the Internet 142, which may bea direct connection (e.g. using cellular transceiver 136, externaldevice connector 140, or network transceiver 144) or may be an indirectconnection (e.g. routed through external device 150). Device 10 mayreceive information from and/or provide information to the Internet.Device 10 may include a web browser configured to display informationreceived from the Internet (including information which may be optimizedby the browser for display on portable device 10). Device 10 may connectto one or more remote servers 146,148 using the Internet. Device 10could also connect to another personal electronic device 150 by way ofthe Internet.

Device 10 may comprise an antenna system (not illustrated) fortransmitting and/or receiving electrical signals. Each of thetransceivers 136,144 and/or location circuit 124 may include individualantennas or may include a common antenna system. The antenna system mayinclude or be implemented as one or more internal antennas and/orexternal antennas.

Portable device 10 may comprise a subscriber identity module (SIM)coupled to processing circuit 132. The SIM may comprise, for example, aremovable or non-removable smart card arranged to encrypt voice and datatransmissions and to store user-specific data for allowing a voice ordata communications network to identify and authenticate the user. TheSIM may store data such as personal settings specific to the user.

Referring to FIG. 3, device 10 and/or processing circuit 132 may beconfigured to run any number of different types of applications.Examples of application programs may include, for example, a phoneapplication 230 (e.g. a telephone application, a voicemail application,a VoIP application, etc.), a messaging application 202 (e.g. an e-mailapplication, an instant message (IM) application, a short messageservice (SMS) application, a multimedia message service (MMS)application), a web browser application 228, a personal settingapplication 210 (e.g. a personal information manager (PIM) application),a contact management application 218, a calendar application 216 (e.g. acalendar application, a scheduling application, etc.), a task managementapplication 222, a document application (e.g. a word processingapplication, a spreadsheet application, a slide application, a documentviewer application, a database application, etc.), a locationapplication 214 (e.g. a positioning application, a navigationapplication, etc.), an image application 212 (e.g. a camera applicationsuch as a digital camera application and/or a video camera application,an image management application, etc.) including media playerapplications (e.g. a video player application, an audio playerapplication, a multimedia player application, etc.), a gamingapplication, a handwriting recognition application, and so forth. Theapplication software may provide a graphical user interface (GUI) tocommunicate information between the portable device 10 and a user.

Device 10 may include a location application 214. Location application214 may be configured to calculate the current position (e.g. the roughcurrent position) of device 10 based on data received from one or morelocation determining circuits 124. Location application 214 may beprovided with map information such that it can translate coordinatepositions into map positions (and vice versa). Location application 214may be configured to provide navigational information to a user such asturn by turn directions.

Device 10 may include personal organizer applications such as a calendarapplication 216, a contacts application 218, and a task application (notillustrated). Calendar application 216 may allow a user to scheduleevents, set alarms for events, and store a wide variety of informationfor events (e.g. name of the event, location of the event, otherattendees of the event, etc.). Contacts application 218 may allow a userto save contact information for a contact such as phone numberinformation (which may be shared with a phone application 230), addressinformation, group information (e.g. which user created group or groupsthe contact belongs to), and other information about the contact. Thetask application allows a user to keep track of pending and/or completedtasks.

Device 10 may include an internal clock application 224 that keeps trackof time information (such as current time of day and/or date), time zoneinformation, daylight savings time information, etc. Clock application224 may be a program running based on data from an internal clock ofmicroprocessor 126, data from a separate clock/timing circuit, or datafrom some other circuit.

Device 10 may also include one or more network connection protocolapplications 226 that allow a user to transfer data over one or morenetworks. Network application 226 may be configured to allow device 10to access a remote device such as server 146,148.

Device 10 may include an Internet browser application 228 that allows auser to browse the internet. The Internet browser application may beconfigured to alter the data received from Internet sites so that thedata can be easily viewed on portable device 10.

Device 10 may include a phone application 230 configured to allow a userto make phone calls. Phone application 230 may use contact informationfrom contact application 218 to place phone calls.

Device 10 may also include one or more messaging applications 202 thatallow a user to send and/or receive messages such as text messages,multi-media messages, e-mails, etc. E-mail messages may come from aserver which may use a Push technology and/or may use a pull technology(e.g. POP3, IMAP, etc.).

Any of the information discussed above for any of the applications (e.g.applications 202-228) may be added to or otherwise associated with animage file.

Referring to FIGS. 1-2, a hand-held portable computing device 10 (e.g. amobile computing device such as a smartphone) includes a number of userinput devices 131. The user input devices include a send button 4configured to select options appearing on display 3 and/or sendmessages, a 5-way navigator 5 configured to navigate through optionsappearing on display 3, a power/end button 6 configured to selectoptions appearing on display 3 and to turn on display 3, a phone button7 usable to access a phone application screen, a calendar button 8usable to access a calendar application screen, a messaging button 9usable to access a messaging application screen, an applications button60 usable to access a screen showing available applications, a thumbkeyboard 11 (which includes a phone dial pad 12 usable to dial during aphone application), a volume button 19 usable to adjust the volume ofaudio output of device 10, a customizable button 20 which a user maycustomize to perform various functions, a ringer switch 22 usable toswitch the smartphone from one mode to another mode (such as switchingfrom a normal ringer mode to a meeting ringer mode), and a touch screendisplay 3 usable to select control options displayed on display 3. Touchscreen display 3 is also a color LCD display 114 having a TFT matrix.

Smartphone 10 also includes audio circuits 120. The audio circuits 120include phone speaker 2 usable to listen to information in a normalphone mode, external speaker 16 louder than the phone speaker (e.g. forlistening to music, for a speakerphone mode, etc.), headset jack 23 towhich a user can attach an external headset which may include a speakerand/or a microphone, and microphone 25 which can be used to pick upaudio information such as the user's end of a conversation during aphone call.

Smartphone 10 also includes a status indicator 1 that can be used toindicate the status of Smartphone 10 (such as messages pending,charging, low battery, etc.), a stylus slot 13 for receiving a stylussuch as a stylus usable to input data on touch screen display 3, adigital camera 15 (see camera 112) usable to capture images, a mirror 14positioned proximate camera 15 such that a user may view themselves inmirror 14 when taking a picture of themselves using camera 15, aremovable battery 18 (see battery 156), and a connector 24 (see externaldata connector 140 and external power supply 134) which can be used toconnect device 10 to either (or both) an external power supply such as awall outlet or battery charger or an external device such as a personalcomputer, a gps unit, a display unit, or some other external device.

Smartphone 10 also includes an expansion slot 21 (see removable memory138) which may be used to receive a memory card and/or a device whichcommunicates data through slot 21, and a SIM card slot 17, locatedbehind battery 18, configured to receive a SIM card or other card thatallows the user to access a cellular network.

In various embodiments device 10 may include a housing 40. Housing 40could be any size, shape, and dimension. In some embodiments, housing 40has a width 52 (shorter dimension) of no more than about 200 mm or nomore than about 100 mm. According to some of these embodiments, housing40 has a width 52 of no more than about 85 mm or no more than about 65mm. According to some embodiments, housing 40 has a width 352 of atleast about 30 mm or at least about 50 mm. According to some of theseembodiments, housing 40 has a width 52 of at least about 55 mm.

In some embodiments, housing 40 has a length 54 (longer dimension) of nomore than about 200 mm or no more than about 150 mm. According to someof these embodiments, housing 40 has a length 54 of no more than about135 mm or no more than about 125 mm. According to some embodiments,housing 40 has a length 54 of at least about 70 mm or at least about 100mm. According to some of these embodiments, housing 40 has a length 54of at least about 110 mm.

In some embodiments, housing 40 has a thickness 50 (smallest dimension)of no more than about 150 mm or no more than about 50 mm. According tosome of these embodiments, housing 40 has a thickness 50 of no more thanabout 30 mm or no more than about 25 mm. According to some embodiments,housing 40 has a thickness 50 of at least about 10 mm or at least about15 mm. According to some of these embodiments, housing 40 has athickness 50 of at least about 50 mm.

While described with regards to a hand-held device, many embodiments areusable with portable devices which are not handheld and/or withnon-portable devices/systems.

The various single applications discussed above may be performed bymultiple applications where more than one application performs all ofthe functions discussed for the application or where one applicationonly performs some of the functions discussed for the application. Forexample, the image application 212 may be divided into an imagecapturing application and a separate image viewing application. Also,more than one application may be included on device 10 that is capableof displaying images as described for image application 212.

Further, while shown as separate applications above, many of the abovelisted applications can be combined into single applications thatperform all or some of the functions listed for more than one of theapplications discussed above.

While some components in FIG. 2 were discussed as being singular andothers were discussed as being plural, the invention is not limited todevices having these same numbers of each type of component. Embodimentsare conceived where each combination of plural and singular componentsexist.

In some embodiments, the various components shown in FIG. 2 may becombined in a single component. For example, in some embodiments,removable memory 138 may also be an external device connector 140 (suchas an SDIO card slot which can be used to receive memory cards, inputand/or output data, and combined devices having both memory andinput/output functions). As another example, in some embodiments, asingle connector could serve as both an external device connector 140and as a connection to an external power supply 134.

Also, in some embodiments, the function of various claim componentsshown in FIG. 2 may be performed by a combination of distinct electricalcomponents. For instance, a location determining circuit 124 may have aseparate microprocessor that works in combination with the mainmicroprocessor 126 of the system to perform the functions of theprocessing circuit 132. As another example, image processing circuit 116may make use of the electronics of camera 112 to perform imageprocessing, while also having other, discrete electronic components.

While the discussion above was generally directed to “futuretasks”—tasks entered more than a quarter hour prior to theircontemplated completion or taking action towards completing (e.g. notimmediately routed to)—the features discussed above may be applied toany tasks, including tasks not meeting the criteria for future tasks(i.e. present tasks) such as immediate tasks (tasks to be completed orto have action taken on immediately when entered). However, in most(although not all) contemplated embodiments, the system performing thefunction is configured to permit any one or more of the above-describedfunctions to be carried out on future tasks.

Additionally, while some discussion was made above relating to websites,it is equally contemplated that the features relating to websites couldbe applied to any other network-accessible data system (e.g. some othernetwork-accessible information retrieval system such as anetwork-accessible database system).

1. A method for providing a user-defined name to represent a currentlocation of a user, the method comprising: storing a user-defined nameto be associated with a location along with data indicative of theassociation in memory; receiving data indicative of a current locationof the mobile computing device; determining whether the current locationof the mobile computing device is associated with the user-defined name;and providing the user-defined name associated with the current locationof the mobile device to a recipient that is not the mobile computingdevice as the location of the user of the mobile computing device basedon the determination of whether the current location of the mobilecomputing device is associated with the user-defined name.
 2. The methodof claim 1, wherein providing the user-defined name comprises providingthe user-defined name to a server to be published on a web page.
 3. Themethod of claim 2, further comprising receiving data indicative ofinformation that the user can use to access the web page, whereinproviding the user-defined name comprises publishing the user-definedname using the data indicative of information that the user can use toaccess the web page.
 4. The method of claim 1, wherein providing theuser-defined name comprises entering text of the user-defined name intoa field provided by a web page for entering text.
 5. The method of claim4, wherein the field is not a field dedicated to entering locationinformation.
 6. The method of claim 1, further comprising receiving dataindicative of a user input, the data being representative of theuser-defined name to be associated with the location that was entered ona user input device.
 7. The method of claim 6, wherein receiving a userinput representative of a user-defined name to be associated with alocation comprises receiving contact information in a contactsapplication on the mobile computing device.
 8. The method of claim 1,wherein storing a user-defined name to be associated with a locationalong with data indicative of the association in memory comprisesstoring a plurality of user-defined names to be associated with a singlelocation.
 9. The method of claim 8, further comprising determining whichof the plurality of user-defined names to provide to the recipient basedon the intended recipient of the provided user-defined name.
 10. Themethod of claim 1, further comprising storing a plurality ofuser-defined names associated with a plurality of locations in memory,determining whether the current location of the mobile computing deviceindicated by the received data is associated with one of the pluralityof user-defined names; and publishing the one of the plurality ofuser-defined names if the current location of the mobile computingdevice indicated by the received data is associated with the one of theplurality of user-defined names.
 11. The method of claim 10, furthercomprising publishing information indicative of the fact that thecurrent location of the mobile computing device indicated by thereceived data is not associated with one of the plurality ofuser-defined names if the current location of the mobile computingdevice indicated by the received data is not associated with one of theplurality of user-defined names.
 12. The method of claim 1, whereinreceiving data indicative of the current location of the mobilecomputing device comprises receiving the data indicative of the currentlocation of the mobile computing device from a location determiningcircuit of the mobile computing device.
 13. The method of claim 1,wherein determining whether the current location of the mobile computingdevice is associated with the user-defined name comprises determiningwhether the current location is in proximity to the location associatedwith the user-defined name in the memory.
 14. The method of claim 13,wherein being in proximity to the location associated with theuser-defined name requires that the current location be within adistance of the location, the distance not being more than two cityblocks.
 15. The method of claim 1, wherein storing a user-defined nameto be associated with a location along with data indicative of theassociation in memory comprises storing a free-form user-defined name.16. A method for publishing a generic name to represent the location ofa user, the method comprising: receiving data indicative of a user inputon a user input device, the data being representative of a generic nameto be associated with a location; storing the generic name to beassociated with the location along with data indicative of theassociation in memory; receiving data indicative of a current locationof the mobile computing device; determining whether the current locationof the mobile computing device is associated with the generic name; andpublishing the generic name associated with the current location of themobile device as the location of the user of the mobile computing devicebased on the determination of whether the current location of the mobilecomputing device is associated with the generic name.
 17. The method ofclaim 16, wherein receiving data indicative of the current location ofthe mobile computing device comprises receiving the data indicative ofthe current location of the mobile computing device from a positioningcircuit of the mobile computing device.
 18. A mobile computing device,comprising: a location determining circuit configured to receive dataindicative of the current location of the mobile computing device; amemory; and a processing circuit configured to receive data indicativeof a user-defined name associated with a location, store theuser-defined name associated with the location along with dataindicative of the association in the memory; receive data indicative ofa current location of the mobile computing device from the locationdetermining circuit; determine whether the current location of themobile computing device is associated with the user-defined name; andpublish the user-defined name associated with the current location ofthe mobile device as the location of the user of the mobile computingdevice based on the determination of whether the current location of themobile computing device is associated with the user-defined name.
 19. Amobile computing device, comprising: a location determining circuitconfigured to receive data indicative of the current location of themobile computing device; memory configured to store access informationusable to access a server that is configured to display information overa network; and a processing circuit configured to receive dataindicative of a current location of the mobile computing device from thelocation determining circuit, to access the server, and to provide dataindicative of the current location of the mobile device as the locationof the user of the mobile computing device, the user-defined name beingpublished in a manner such that the server will display the user'slocation in a display field that is not dedicated to displaying thelocation of the user.
 20. A mobile computing device, comprising: alocation determining circuit configured to determine the currentlocation of the mobile computing device; and a processing circuitconfigured to implement an application having a task list function, theprocessing circuit being further configured to allow location to beassociated with tasks of task list, to receive data indicative of acurrent location of the mobile computing device from the locationdetermining circuit, and to provide reminders for a task based on themobile computing device leaving a location associated with the task. 21.The mobile computing device of claim 19, wherein the location associatedwith the task comprises an area bounded by a boundary and leaving thelocation is determined based on crossing the boundary.
 22. A system,comprising a processing circuit configured to implement an applicationhaving a task list function, the processing circuit being furtherconfigured to receive data indicative of a task, to analyze the dataindicative of the task, and to find locations associated with the taskbased on the analysis.
 23. The system of claim 22, wherein theprocessing circuit is further configured to receive data indicative of acurrent location of a mobile computing device from a locationdetermining circuit and to provide reminders for a task based on thedata indicative of the current location of the mobile computing device.24. The system of claim 22, wherein the processing circuit beingconfigured to analyze the data indicative of the task and to findlocations associated with the task based on the analysis comprises theprocessing circuit being configured to analyze data indicative of thetask that does not comprise location information and to find locationsassociated with the task based on the analysis of the data indicative ofthe task that does not comprise location information.
 25. The system ofclaim 22, wherein the processing circuit being configured to analyze thedata indicative of the task and to find locations associated with thetask based on the analysis comprises the processing circuit beingconfigured to analyze data indicative of the task that includes locationinformation and to find additional locations associated with the taskbased on an analysis of the location information.
 26. The system ofclaim 22, wherein the processing circuit is configured to find locationsassociated with the task based on the analysis and further based on userpreferences input in the system.
 27. The system of claim 22, wherein theprocessing circuit is configured to find locations associated with thetask based on the analysis and further based on monitored activities ofa user.
 28. The system of claim 22, wherein the processing circuit beingconfigured to find locations associated with the task comprisesreceiving data from a database remote from the processing circuit. 29.The system of claim 28, further comprising a network interface coupledto the processing circuit, the data from the database provided to theprocessing circuit using the network interface.
 30. The system of claim22, further comprising a mobile computing device, the mobile computingdevice comprising the processing circuit.
 31. The system of claim 30,wherein the processing circuit is configured to pre-load location datarelated to tasks of the task application.
 32. The system of claim 31,wherein the processing circuit is configured to pre-load location databased on route information.
 33. The system of claim 22, furthercomprising a mobile computing device and a server, the server comprisingthe processing circuit and configured to communicate data related to thetask application to the mobile computing device.
 34. The system of claim22, wherein the processing circuit is configured to provide a routebased on location information associated with tasks of a taskapplication.
 35. The system of claim 22, wherein the task applicationcomprises a set of tasks and the processing circuit is configured toprovide a user with an option to route to a subset of the set of tasks,the subset comprising a plurality of tasks.